//创建服务
const express = require('express')
const app = express()
const cors = require('cors')
app.use(cors())
app.use(express.urlencoded({ extended: true })) 

//生成token标识
const jwt = require('jsonwebtoken');
//生成语法： const token= jwt.sign('数据','密钥-secretKey','过期时间')
//过期时间：{ expiresIn: '1day/1h/10秒'}
//密钥
const secert = require('./secret')

//登录接口
app.get('/login',(req,res)=>{
    let user = req.query.user;
    let pwd = req.query.pwd;
    //----查询数据库---省略了--- 
    //生成token
    const token = jwt.sign({user,id:123},secert.secretKey,{expiresIn:20})
    res.send({
        info:'success',
        status:200,
        token
    })
})

//测试token是否过期 
//获取我的个人信息数据--验证token是否有效--- 
/**
 * 查看个人信息---有token权限
 * 请求方式:post请求 不要参数
 * token的时间是： 登录的时候设置的： { expiresIn: 20 * 1 }
 */
//后端校验token是否过期
app.post('/getuser', (req, res) => {
    let token = req.headers.authorization;//接受token字段
    console.log('token',token);
    if (token) {
        jwt.verify(token, secert.secretKey, (err, decoded) => {
            if (err) {
                switch (err.name) {
                    case 'JsonWebTokenError':
                        res.send({ success:false, status:403, code: -1, msg: '无效的token' });
                        break;
                    case 'TokenExpiredError':
                        res.send({ success:false,status:403, code: -1, msg: 'token过期' });
                        break;
                }
            } else {//token验证通过了 
                //返回给前端相应的信息
                res.send({
                    status: 200,
                    success:true,
                    info: "token验证成功--返回请求的数据",
                    result:[1,2,3,4]
                })
            }
        })
    } else {
        res.send({
            success:false,
            status:403,
            info: "需要携带发送token"
        })
    }
})




app.listen(8888,()=>{
    console.log(8888);
})
